package vis.core.service.sys;


import java.util.Collection;
import java.util.HashSet;
import java.util.List;

/**
 * 资源服务
 */
public interface SysResService {

    /**
     * 读取角色和部门具备资源
     *
     * @param roleIds 角色ID集合，允许默认 NULL
     * @param orgIds  部门ID集合，允许默认 NULL
     * @return 返回具备的所有资源
     */
    HashSet<String> hasRes(Collection<String> roleIds, Collection<String> orgIds);

    //    ArrayList<String> roleHasRes(Collection<String> roleIds);
    //    ArrayList<String> orgHasRes(Collection<String> orgIds);

    /**
     * 刷新 角色-资源 缓存
     *
     * @param roleIds 角色ID集合
     */
    void refreshRoleResCache(Collection<String> roleIds);

    void refreshRoleResCache(String roleId);

    /**
     * 刷新 部门-资源 缓存
     *
     * @param orgIds 部门ID集合
     */
    void refreshOrgResCache(Collection<String> orgIds);

    void refreshOrgResCache(String orgId);


    /**
     * 判断是否具备，URI访问资格
     *
     * @param requestURI 请求路径：/aaa/bbb/ccc
     * @param roleIds    角色ID集合
     * @param orgIds     部门ID集合
     * @return 是否具备 true/false
     */
    boolean checkHasRes(String requestURI, Collection<String> roleIds, Collection<String> orgIds);

    List<String> getUserHasResList(Object userId);
}
